﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using FlorDeLiz.BusinessLayer;
using FlorDeLiz.Utils;
using FlorDeLiz.BusinessEntitites;

namespace FlorDeLiz.Cadastro
{
    public partial class CadastroVendedores : Form
    {       
        public CadastroVendedores()
        {
            InitializeComponent();
        }

        private void btnfechar_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void CadastroVendedores_Load(object sender, EventArgs e)
        {
            CarregarGrid();
            LimparCampos();
        }

        private void CarregarGrid()
        {
            vendedorBindingSource.DataSource = VendedorBL.Instancia.ObterVendedores(null, string.Empty, string.Empty, string.Empty);
            dgvVendedores.AutoGenerateColumns = false;
            dgvVendedores.DataSource = vendedorBindingSource;
            dgvVendedores.ClearSelection();
        }

        private void txtCPF_KeyPress(object sender, KeyPressEventArgs e)
        {
            e.Handled = Util.Instancia.ValidarDigito(e.KeyChar);
        }

        private void btnNovo_Click(object sender, EventArgs e)
        {
            LimparCampos();
            dgvVendedores.ClearSelection();
        }

        private void LimparCampos()
        {
            txtNome.Text = string.Empty;
            txtCodigo.Text = string.Empty;
            txtCodigoVendedor.Text = string.Empty;
            txtCPF.Text = string.Empty;

            lblErrorCodigo.Visible = false;
            lblErrorCPF.Visible = false;
            lblErrorNome.Visible = false;
        }

        private void btnGravar_Click(object sender, EventArgs e)
        {
            if (ValidarCampos())
            {
                Vendedor vendedor = new Vendedor();
                int codigo = 0;
                int.TryParse(txtCodigo.Text, out codigo);
                vendedor.Id = codigo;
                vendedor.Nome = txtNome.Text.Trim().ToUpper();
                vendedor.CPF = txtCPF.Text.Replace(",", "").Replace(".", "").Replace("-", "").Trim();
                vendedor.Codigo = txtCodigoVendedor.Text.Trim().ToUpper();

                VendedorBL.Instancia.GravarVendedor(vendedor);
                CarregarGrid();
            }    
        }

        private bool ValidarCampos()
        {
            StringBuilder sb = new StringBuilder();
            if (string.IsNullOrEmpty(txtNome.Text.Trim()))
            {
                sb.AppendLine("O campo Nome é obrigatório!");
                lblErrorNome.Visible = true;
            }

            if (string.IsNullOrEmpty(txtCPF.Text.Replace(",", "").Replace(".", "").Replace("-", "").Trim()))
            {
                sb.AppendLine("O campo CPF é obrigatório!");
                lblErrorCPF.Visible = true;
            }
            else if (!Util.Instancia.ValidarCPF(txtCPF.Text.Replace(",", "").Replace(".", "").Replace("-", "").Trim()))
            {
                sb.AppendLine("O CPF informado é inválido!");
                lblErrorCPF.Visible = true;
            }            

            if (string.IsNullOrEmpty(txtCodigoVendedor.Text.Trim()))
            {
                sb.AppendLine("O campo Código do Vendedor é obrigatório!");
                lblErrorCodigo.Visible = true;
            }

            if (!string.IsNullOrEmpty(sb.ToString()))
            {
                MessageBox.Show(sb.ToString(), "Atenção!", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                return false;
            }
            else
            {
                return true;
            }

        }

        private void txtPesquisa_TextChanged(object sender, EventArgs e)
        {
            if (!string.IsNullOrEmpty(txtPesquisa.Text.Trim()) && txtPesquisa.Text.Length >= 3)
            {
                List<Vendedor> vendedores = new List<Vendedor>();
                vendedores = ((List<Vendedor>)vendedorBindingSource.DataSource).FindAll(c => c.Nome.ToUpper().Contains(txtPesquisa.Text.ToUpper().Trim()));
                dgvVendedores.DataSource = vendedores;
            }
            else
            {
                dgvVendedores.DataSource = vendedorBindingSource.DataSource;
            }
            dgvVendedores.ClearSelection();
        }

        private void dgvVendedores_SelectionChanged(object sender, EventArgs e)
        {            
            if (dgvVendedores.SelectedRows.Count > 0)
            {
                Vendedor vendedor = (Vendedor)dgvVendedores.SelectedRows[0].DataBoundItem;

                if (vendedor != null)
                {
                    txtCodigo.Text = vendedor.Id.ToString();
                    txtCodigoVendedor.Text = vendedor.Codigo;
                    txtCPF.Text = vendedor.CPF;
                    txtNome.Text = vendedor.Nome;                    
                }
            }
            else
            {
                LimparCampos();
            }      
        }
    }
}
